# student_management.py
class Student:
    """
    表示一个学生，包含姓名、学号和成绩列表。
    """
    def __init__(self, name, student_id):
        self.name = name
        self.student_id = student_id
        self.grades = []
    
    def add_grade(self, grade):
        """
        添加一门课程的成绩。
        :param grade: 成绩（float）
        """
        self.grades.append(grade)

class GradeManager:
    """
    管理学生成绩，包含添加学生、显示学生信息等基础功能。
    """
    def __init__(self):
        self.students = []
    
    def add_student(self, student):
        """
        添加一个学生。
        :param student: Student对象
        """
        self.students.append(student)
    
    def display_students(self):
        """
        显示所有学生的信息（姓名、学号和成绩列表）。
        """
        for student in self.students:
            print(f"姓名: {student.name}, 学号: {student.student_id}, 成绩: {student.grades}")
    
    def calculate_average(self, student):
        """
        计算并返回学生的平均分。
        
        :param student: Student对象
        :return: 平均分（float）
        """
        return sum(student.grades) / len(student.grades)
    
    def sort_students_by_average(self):
        """
        根据学生平均分对学生进行排序（降序）。
        
        :return: 排序后的学生列表（list of Student对象）的副本，不修改原始列表
        """
        return sorted(self.students, key=lambda student: self.calculate_average(student), reverse=True)

# 完善主函数
if __name__ == "__main__":
    manager = GradeManager()
    
    # 添加学生示例
    student1 = Student("张三", "001")
    student1.add_grade(85.5)
    student1.add_grade(90.0)
    manager.add_student(student1)
    
    student2 = Student("李四", "002")
    student2.add_grade(78.0)
    student2.add_grade(82.5)
    manager.add_student(student2)
    
    # 添加更多学生（根据需要）
    
    # 调用方法
    manager.display_students()
    sorted_students = manager.sort_students_by_average()
    print("\n按平均分排序后的学生：")
    for i, student in enumerate(sorted_students):
        avg = manager.calculate_average(student)
        print(f"排名{i+1}: {student.name} 的平均分: {avg:.2f}")